package com.yikes.srb.service;

import com.yikes.srb.common.result.PageResult;
import com.yikes.srb.leadingModle.form.dict.DictAddForm;
import com.yikes.srb.leadingModle.form.dict.DictEditForm;
import com.yikes.srb.leadingModle.form.dict.DictQuery;
import com.yikes.srb.leadingModle.vo.DictVO;
import com.yikes.srb.pojo.entity.Dict;
import com.baomidou.mybatisplus.extension.service.IService;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 * 数据字典 服务类
 * </p>
 *
 * @author guanrong.yin
 * @since 2024-12-03
 */
public interface DictService extends IService<Dict> {

    /**
     * 分页查询
     *
     * @param query
     * @return
     */
    PageResult<DictVO> listPage(DictQuery query);

    /**
     * 根据id查询单条信息
     *
     * @param id
     * @return
     */
    DictVO infoId(Long id);

    /**
     * 新增
     * @param form
     */
    void create(@Valid DictAddForm form);

    /**
     * 编辑
     * @param form
     */
    void edit(@Valid DictEditForm form);

    /**
     * 删除
     * @param id
     */
    void del(Long id);

    /**
     * 导入excel文件数据
     * @param file
     */
    void importExcel(MultipartFile file);

    void exportExcel(DictQuery query, HttpServletRequest request, HttpServletResponse response);

    /**
     * 根据上级id获取子节点数据列表
     * @param parentId
     * @return
     */
    List<DictVO> listByParentId(Long parentId);

    /**
     * 三级树列表数据
     *
     * @return
     */
    List<DictVO> tree();

    /**
     * 根据dictCode获取下级节点
     *
     * @param dictCode
     * @return
     */
    List<DictVO> findByDictCode(String dictCode);

    /**
     * 根据dictCode和value获取名称
     * @param dictCode
     * @param value
     * @return
     */
    String getNameByParentDictCodeAndValue(String dictCode, Integer value);
}
